home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / DRIVES.SWG / 0078_Drive Detection.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-24  |  1KB  |  70 lines

  1. {
  2.  SA> Does anyone have any idea of how I can check the system hardware and
  3.  SA> identify available hard drives and disk drives?
  4. }
  5.  
  6.  
  7.  
  8. const
  9.   { GetDriveType return values.  REQUIRES DOS 3.x or greater}
  10.  
  11.   dtError     = 0; { Drive physically isn't available }
  12.   dtRemote    = 1; { Remote (network) disk drive }
  13.   dtFixed     = 2; { Fixed (hard) disk drive }
  14.   dtRemovable = 3; { Removable (floppy) disk drive }
  15.   dtBadVer    = $FF; { Invalid DOS version (DOS 3.x required) }
  16.  
  17.  
  18. Function GetDriveType(Drive : byte) : byte; assembler;
  19. Asm
  20.   MOV AH,30h
  21.   INT 21h
  22.   CMP AL,3
  23.   JGE @@1
  24.   MOV AL,dtBadVer
  25.   JMP @@4
  26. @@1:
  27.   MOV BL,Drive
  28.   MOV AX,4409h
  29.   INT 21h
  30.   JNC @@2
  31.   MOV AL,dtError
  32.   JMP @@5
  33. @@2:
  34.   CMP AL,True
  35.   JNE @@3
  36.   MOV AL,dtRemote
  37.   JMP @@5
  38. @@3:
  39.   MOV AX,4408h
  40.   INT 21h
  41.   CMP AL,True
  42.   JNE @@4
  43.   MOV AL,dtFixed
  44.   JMP @@5
  45. @@4:
  46.   MOV AL,dtRemovable
  47. @@5:
  48. End; { GetDriveType }
  49.  
  50. var
  51.   Drive : byte;
  52.   DT : byte;
  53.  
  54. Begin
  55.   for Drive := 1 to 25 do
  56.   begin
  57.     DT := GetDriveType(Drive);
  58.     if DT <> dtError then
  59.     begin
  60.       Write('Drive ', Chr(Drive + 64), ': ');
  61.       case DT of
  62.         dtRemote: WriteLn('Network drive');
  63.         dtFixed: WriteLn('Hard disk');
  64.         dtRemovable: WriteLn('Floppy drive')
  65.       end
  66.     end
  67.   end
  68. End.
  69.  
  70.